//import com.alibaba.fastjson.JSON;
//import org.apache.poi.ss.formula.functions.T;
//import org.elasticsearch.action.search.SearchResponse;
//import org.elasticsearch.common.text.Text;
//import org.elasticsearch.search.SearchHit;
//import org.elasticsearch.search.SearchHits;
//import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//public class ESUtil<T> {
//
//    private SearchResponse response;
//
//    Class<T> obj;
//
//    List<T> list = new ArrayList<>();
//
//    public ESUtil(SearchResponse response, Class<T> obj) {
//        this.response = response;
//        this.obj = obj;
//
//        SearchHits hits = response.getHits();
//
//        for (SearchHit hit:hits
//        ) {
//            //将查询结果中的source数据取出转换成对应实体类
//            T tarEntity  = JSON.parseObject(hit.getSourceAsString(), obj);
//
//            //获取所有高亮字段
//            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
//
//            //处理每个高亮字段
//            for (String key:highlightFields.keySet()
//            ) {
//                //得到高亮内容
//                Text text = highlightFields.get(key).fragments()[0];
//                //高亮所对应的属性
//                Field field = new T().getClass().getDeclaredField(key);
//                //处理属性
//                if (field!=null){
//                    field.setAccessible(true);          //抹除访问修饰符
//                    try {
//                        field.set(tarEntity,text.string()); //给属性赋值，用高亮内容替换
//                    } catch (IllegalAccessException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//            list.add(tarEntity);
//        }
//    }
//
//    public SearchResponse getResponse() {
//        return response;
//    }
//
//    public void setResponse(SearchResponse response) {
//        this.response = response;
//    }
//
//    public Class<T> getObj() {
//        return obj;
//    }
//
//    public void setObj(Class<T> obj) {
//        this.obj = obj;
//    }
//
//    public List<T> getList() {
//        return list;
//    }
//
//    public void setList(List<T> list) {
//        this.list = list;
//    }
//}
